#include "plan.h"
#include <GL/glut.h>
#include <iostream>
#include "scene.h"

using namespace std;


/***********************************/
/*** Constructeurs / Destructeur ***/
/***********************************/

Plan::Plan(float largeur, float hauteur) : _largeur(largeur), _hauteur(hauteur)
{
  _tex=new Texture("texture.jpg");
}

Plan::Plan(float largeur, float hauteur, const char *image) : _largeur(largeur), _hauteur(hauteur)
{
  _tex = new Texture(image); 
}

Plan::~Plan()
{
  if(_tex) delete _tex;
}

/*****************************/
/***** Getters / Setters *****/
/*****************************/

Texture* Plan::getTexture()
{
  return _tex;
}


/*******************************/
/***** Fonctions de dessin *****/
/*******************************/

void Plan::displayAnimated()
{
  if(_material)
  {
    _material->display();
  }
  glPushMatrix();
    glTranslatef(_position[0], _position[1], _position[2]);
      glPushMatrix();
        _drawAnimated();
      glPopMatrix();
  glPopMatrix();
}



void Plan::_draw()
{
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glDepthMask(GL_FALSE);

  _tex->loadTexture();
  glEnable(GL_TEXTURE_2D);
  glBegin(GL_QUADS);
  glTexCoord2f(0.0,0.0); glVertex3f(-_largeur/2.0,  _hauteur/2.0, 0.0);
  glTexCoord2f(1.0,0.0); glVertex3f( _largeur/2.0,  _hauteur/2.0, 0.0);
  glTexCoord2f(1.0,1.0); glVertex3f( _largeur/2.0, -_hauteur/2.0, 0.0);
  glTexCoord2f(0.0,1.0); glVertex3f(-_largeur/2.0, -_hauteur/2.0, 0.0);
  glEnd();
  glDisable(GL_TEXTURE_2D);

  glDepthMask(GL_TRUE);
  glDisable(GL_BLEND);
 
}


void Plan::_drawAnimated()
{
  float dec = Scene::defil;
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glDepthMask(GL_FALSE);

  _tex->loadTexture();
  glEnable(GL_TEXTURE_2D);
  glBegin(GL_QUADS);
  glTexCoord2f(dec,0.0); glVertex3f(-_largeur/2.0,  _hauteur/2.0, 0.0);
  glTexCoord2f(dec+1.0,0.0); glVertex3f( _largeur/2.0,  _hauteur/2.0, 0.0);
  glTexCoord2f(dec+1.0,1.0); glVertex3f( _largeur/2.0, -_hauteur/2.0, 0.0);
  glTexCoord2f(dec,1.0); glVertex3f(-_largeur/2.0, -_hauteur/2.0, 0.0);
  glEnd();
  glDisable(GL_TEXTURE_2D);

  glDepthMask(GL_TRUE);
  glDisable(GL_BLEND);
 
}

